<?php
	include_once $_SERVER["DOCUMENT_ROOT"].'/service/entite/albummusique/AlbumMusiqueEntite.php';
	include_once $_SERVER["DOCUMENT_ROOT"].'/persistence/albummusique/AlbumMusiqueDAO.php';
	include_once($_SERVER["DOCUMENT_ROOT"].'/outils/properties/PropertiesLoader.php');
	PropertiesLoader::loadProperties($_SERVER["DOCUMENT_ROOT"].'/properties.ini');

	class AlbumMusiqueService {
		
		private function AlbumMusiqueService() {
			//évite la construction
		}
		
		public static function createAlbumMusique() {
			return new AlbumMusiqueEntite();
		}
		
		public static function getListeMusique($albumMusiqueEntite) {
			$albumMusiqueEntite = MusiqueDAO::loadListeMusiqueAlbum($albumMusiqueEntite);
			return $albumMusiqueEntite->listeMusique;
		}
		
		public static function getAlbumMusiqueForModification($id) {
			return AlbumMusiqueDAO::getAlbumMusiqueByID($id);
		}
		
		public static function getAlbumMusiqueByID($id, $loadListeMusiqueAlbum = false) {
			$albumMusique = AlbumMusiqueDAO::getAlbumMusiqueByID($id);
			if ($albumMusique != null) {
				AlbumMusiqueDAO::loadAlbumPhoto($albumMusique);
				if ($loadListeMusiqueAlbum) {
					AlbumMusiqueService::loadListeMusiqueAlbum($albumMusique);
				}
			}
			return $albumMusique;
		}
		
		public static function supprimerAlbumMusique($id) {
			//TODO supprimer le répertoire?
			return AlbumMusiqueDAO::delete(AlbumMusiqueDAO::getAlbumMusiqueByID($id));
		}
		
		public static function save(AlbumMusiqueEntite $albumMusiqueEntite) {
			$isCreation = $albumMusiqueEntite->id == Entite::getUnpersistedId();
			$result = AlbumMusiqueDAO::save($albumMusiqueEntite);
			if ($isCreation) {
				AlbumMusiqueService::createRepertoireAlbumMusique($albumMusiqueEntite->id);
			}
			return $result;
		}
		
		/*
		 * Utilisé par la reprise de données des albums
		 */
		public static function insertWithValues($id, $commentaire, $titre, $artiste,$date) {
			$albumMusiqueEntite = new AlbumMusiqueEntite();
			$albumMusiqueEntite->id = $id;
			$albumMusiqueEntite->titre = $titre;
			$albumMusiqueEntite->artiste = $artiste;
			$albumMusiqueEntite->date = $date;
			$albumMusiqueEntite->commentaire = $commentaire;
			AlbumPhotoDAO::insertWithId($albumPhotoEntite);
			return $albumPhotoEntite;
		}
		
		public static function getListeAlbumMusique() {
			return AlbumMusiqueDAO::getListeAlbumMusique();
		}
		
		public static function loadListeMusiqueAlbum($albumMusique, $refresh=true) {
			if ($albumMusique->listePhoto == null || $refresh) {
				$albumMusique = MusiqueDAO::loadListeMusiqueAlbum($albumMusique);
			}
			return $albumMusique;
		}
		
		public static function createRepertoireAlbumMusique($albumMusiqueId) {
			$cheminAlbumMusique = $_SERVER["DOCUMENT_ROOT"].PropertiesLoader::getProperty("albumMusique.chemin");
			mkdir($cheminAlbumMusique."/".$albumMusiqueId);
		}
		
		public static function loadAlbumPhoto($albumMusiqueEntite) {
			return  AlbumMusiqueDAO::loadAlbumPhoto($albumMusiqueEntite);
		}
	}
?>